'''Sine之舞
【问题描述】
最近FJ为他的奶牛们开设了数学分析课，FJ知道若要学好这门课，
必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏，
寓教于乐，提高奶牛们的计算能力。
不妨设
    An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)
    Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
FJ想让奶牛们计算Sn的值，请你帮助FJ打印出Sn的完整表达式，以方便奶牛们做题。
【输入形式】
    仅有一个数：N<201。
【输出形式】
    请输出相应的表达式Sn，以一个换行符结束。
    输出中不得含有多余的空格或换行、回车符。
【样例输入】
    3
【样例输出】
    ((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1
'''

def An(n):
    expression=f'sin({n})'
    for i in range(n,1,-1):
        if i%2 !=0:
            expression=f'sin({i-1}+{expression})'
        else:
            expression=f'sin({i-1}-{expression})'
    return expression

def Sn(n):
    expression=f'{An(1)}+{str(n)}'
    for i in range(2,n+1):
        expression=f'({expression}){An(i)}+{n-i+1}'
    return expression

def AnR(n,i=1):
    if n == 1:
        return f'sin({i})'
    symbol=['+','-']
    return f'sin({i}{symbol[i%2]}{AnR(n-1,i+1)})'

def SnR(n,i=1):
    if n == 1:
        return f'{AnR(n)}+{i}'
    return f'({SnR(n-1,i+1)}){AnR(n)}+{i}'

result=True
for i in range(1,201):
    result&=Sn(i)==SnR(i)
print(result)
